// 在使用时，不建议你直接魔改模板的代码，以免在运行时出现意外bug，而是在本文件中根据模板的提供的API，来适应你的业务逻辑 
// ....



// ================================= 示例：一些基本信息 ================================= 

// 设置模板标题 
sa_admin.title = "科技创新中心信息管理系统（屏山县）";
sa_admin.logo_url = ''; // 设置logo图标地址   默认值：sa-resources/admin-logo.png
sa_admin.icon_url = 'sa-resources/admin-logo.png'; // 设置icon图标地址   默认值：sa-resources/admin-logo.png


// ================================= 示例：自定义菜单 =================================

var myMenuList = window.menuList; // window.menuList 在 menu-list.js 中定义

user = getLoginInfo()
if (user) {
	if(!user.info){
		user.info = {
			id: user.account.id,
			nickname: user.user && user.user.nickname ? user.user.nickname : '未定义',
			img: user.user && user.user.img ? user.user.img : 'sa-resources/admin-logo.png',
		}
	}
	
	let myMenuIds = []
	if(!baseConfig.debug){
		user.menus.forEach(t => {
			myMenuIds.push(t.identity)
		})
		
		if(accountIsRole('super-admin')) {
			user.menu = 'all'
		}
	}else {
		myMenuIds = user.menu
	}
	
	// 加载远程菜单
	if(baseConfig.remoteMenu){
		let remoteMenus = JSON.parse(JSON.stringify(user.menus))
		let menuList = listToMenu(remoteMenus, {childName:'childList'})
		myMenuList = []
		
		menuList.forEach(item => {
			myMenuList.push({
				id: item.identity,
				name: item.name,
				icon: item.icon,
				info: item.remark,
				disabled: item.status == 1 ? false : true,
				url: item.url ? item.url : null,
				click: item.clickFun ? new Function(item.clickFun) : null,
			})
			
			if(item.childList && item.childList.length > 0){
				myMenuList[myMenuList.length - 1].childList = []
				
				item.childList.forEach(child => {
					myMenuList[myMenuList.length - 1].childList.push({
						id: child.identity,
						name: child.name,
						icon: child.icon,
						info: child.remark,
						disabled: child.status == 1 ? false : true,
						url: child.url ? child.url : null,
						click: child.clickFun ? new Function(child.clickFun) : null,
					})
				})
			}
		})
	}
	
	sa_admin.setMenuList(myMenuList, user.menu == 'all' ? null : myMenuIds); // 写入菜单
}

// sa_admin.setMenuList(myMenuList, [11, 1, '1-1']);	// 写入菜单，并设置应该显示哪些id的菜单（第二个参数为空时，代表默认显示所有） 
// sa_admin.initMenu();	// 更简单的写法，相当于setMenuList省略第一个参数 

// 如果需要获得更多操作能力，如：动态添加菜单、删除菜单等
// 可直接 sa_admin.menuList 获得菜单引用，直接操作对象 


// ================================= 示例：js控制打开某个菜单 =================================

// 显示主页选项卡 
// sa_admin.showHome();

// 显示一个选项卡, 根据id
// sa_admin.showTabById('1-1');

// 关闭一个选项卡，根据 id 
// sa_admin.closeTabById('1-1');

// 新增一个选项卡
// sa_admin.addTab({id: 12345, name: '新页面', url: 'http://web.yanzhi21.com'});	// id不要和已有的菜单id冲突，其它属性均可参照菜单项 

// 新增一个选项卡、并立即显示  
// sa_admin.showTab({id: 12345, name: '新页面', url: 'http://web.yanzhi21.com'});	// 参数同上 

// 打开一个 菜单，根据 id
// sa_admin.showMenuById('1-1');	

// ================================= 示例：设置user信息 =================================
// 用户登录后，右上角可直接显示用户的头像和昵称
sa_admin.user = user

// ================================= 示例：设置登录后的头像处，下拉可以出现的选项  =================================
sa_admin.dropList = [ // 头像点击处可操作的选项
	{
		name: '我的资料',
		click: function() {
			sa.showIframe('我的资料', 'page/auth/account-info.html', '600px', '500px');
		}
	},
	{
		name: '修改密码',
		click: function() {
			sa.showIframe('修改密码', 'page/auth/account-pwd.html', '600px', '500px');
		}
	},
	{
		name: '切换账号',
		click: function() {
			sa.$page.openLogin('login.html');
		}
	},
	{
		name: '退出登录',
		click: function() {
			sa.confirm('退出登录？', function(res) {
				sa.ajax2('/acc/exit', function(res) {
					sa.alert('注销成功', function() {
						location.href = "login.html";
					})
				}, {
					msg: '正在注销'
				})
			});
		}
	}
]


// ================================= 示例：调用另一个页面的代码 =================================
// var win = sa_admin.getTabWindow('2-1');		// 根据id获取其页面的window对象   （如果此页面未打开，则返回空）（跨域模式下无法获取其window对象）
// win.app.f5();

// 注意:
// 根据`iframe`的子父通信原则，在子页面中调用父页面的方法，需要加上parent前缀，例如：
// parent.sa_admin.msg('啦啦啦');		// 调用父页面的弹窗方法 



// ================================= 示例：初始化模板(必须调用)  =================================
// 初始化模板 
// sa_admin.init();
// 或者以下方式，增加配置项
sa_admin.init({
	themeDefault: '4',	// 默认的主题，可选值：1、2、3、4、5、6、7 
	switchDefault: 'fade',	// 默认的切换动画，可选值：fade、slide、cube、coverflow、flip
	is_show_tabbar: true,	// 是否显示tabbar栏, 默认为true, 配置为false后将不再是一个多窗口tab, 取之显示的是一个面包屑导航栏
	is_reme_open: false,	// 是否记住上一次最后打开的窗口, 默认为true, 配置为false后, 每次刷新不再自动打开上一次最后打开的窗口(也不再有锚链接智能tab调准)
});

// ================================= 消息监听器  =================================
var msgIndex = null;
var isLoading = false
var refulshMsg = (unTips = false) => {
	let id = 'msg-tips'
	
	if ((sa_admin.getTabById(id) != null || msgIndex || isLoading) && !unTips) {
		return;
	}
	
	isLoading = true
	
	let params = [{
			left: 'recvUserId',
			op: 'eq',
			right: [user.info.id]
		},
		{
			left: 'readTime',
			op: 'isNull',
			right: ['1']
		},
	]
	
	params = queryParamsToJsonStr(params)
	
	let url = getUrl('pub-msg', 'list')
	let http = getHttp(axios, 'pub-msg', 'list')
	http(url, {
		params: {
			isPage: false,
			params: params
		}
	}).then(res => {
		isLoading = false
		
		let nums = 0
		let typeNums = {
			1: 0,
			2: 0,
			3: 0,
		}
		
		if (res.list && res.list.length > 0) {
			if(!unTips){
				let url = 'page/msg/list.html?type=' + res.list[0].type
					
				msgIndex = sa_admin.$notify({
					message: `<span style="cursor: pointer">您有新的消息，点此查看详情</span>`,
					type: 'warning',
					showClose: true,
					duration: 60000,
					dangerouslyUseHTMLString: true,
					position: 'bottom-right',
					onClick: () => {
						sa_admin.showTab({
							id: id,
							name: "查看消息("+ res.list.length +")",
							url: url
						});
						
						msgIndex.close()
						msgIndex = null
					},
					onClose: () => {
						msgIndex = null
					}
				});
			}
			
			res.list.forEach(t => {
				nums++
				typeNums[t.type]++
			})
		}
		
		let menu = sa_admin.getMenuById(sa_admin.menuList, '14')
		menu.value = nums
		
		let menu1 = sa_admin.getMenuById(sa_admin.menuList, '14-1')
		if(menu1) menu1.value = typeNums[1]
		
		let menu2 = sa_admin.getMenuById(sa_admin.menuList, '14-2')
		if(menu2) menu2.value = typeNums[2]
		
		let menu3 = sa_admin.getMenuById(sa_admin.menuList, '14-3')
		if(menu3) menu3.value = typeNums[3]
	}).catch((err) => { // 请求失败处理
		console.error(err)
		isLoading = false
	});
}

setInterval(refulshMsg, 3000)

// ================================= 基础配置初始化  =================================
getBaseRoles()

// ================================= 状态检查  =================================
var checkLoginInfo = () => {
	if(!getLoginInfo()){
		return
	}
	
	let url = getUrl('auth', 'check', {token: user.token})
	let http = getHttp(axios, 'auth', 'check')
	http(url, {})
	.then((res) => {
		
	})
	.catch((err) => { // 请求失败处理
		console.error(err)
		isLoading = false
		clearLoginInfo()
		
		sa.error('登录失效')
		
		setTimeout(() => {
			location.href = "login.html";
		}, 1500)
	});
}
// setInterval(checkLoginInfo, 5000)

// ================================= 跨窗口消息处理  =================================
var globalMsgEvent = (event) => {
	if(event.data && event.data.type == 'close'){
		setTimeout(() => {
			sa_admin.closeTabById(event.data.data)
			
			setTimeout(() => {
				var nativeTab = sa_admin.nativeTab
				var win = sa_admin.getTabWindow(nativeTab.id)
				win.app.f5()
			}, 500)
		}, 1000)
	}
}
window.addEventListener('message', globalMsgEvent, false)